package br.com.projeco.persistencia.datastore.entidades;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import br.com.projeco.biblioteca.mensageria.dados.CondicaoInfo;
import br.com.projeco.biblioteca.mensageria.dados.CondicaoTipoEnum;
import br.com.projeco.biblioteca.persistencia.EntidadeDb;
import br.com.projeco.biblioteca.persistencia.IEntidadeDbLib;
import br.com.projeco.biblioteca.persistencia.mensagens.ConsultarObjetoRequest;
import br.com.projeco.biblioteca.persistencia.mensagens.ConsultarObjetoResponse;
import br.com.projeco.biblioteca.persistencia.mensagens.ReceberObjetoRequest;
import br.com.projeco.biblioteca.persistencia.mensagens.ReceberObjetoResponse;
import br.com.projeco.biblioteca.persistencia.mensagens.RemoverObjetoRequest;
import br.com.projeco.biblioteca.persistencia.mensagens.RemoverObjetoResponse;
import br.com.projeco.biblioteca.persistencia.mensagens.SalvarObjetoRequest;
import br.com.projeco.biblioteca.persistencia.mensagens.SalvarObjetoResponse;
import br.com.projeco.persistencia.datastore.DBLibHelper;
import br.com.projeco.principal.dados.TelefoneInfo;

public class TelefoneDbLib  extends EntidadeDb implements IEntidadeDbLib<TelefoneInfo> {

	@Override
	public ConsultarObjetoResponse<TelefoneInfo> consultarObjeto(
			ConsultarObjetoRequest<TelefoneInfo> parametros) {
		// Monta os parâmetros
		Map<String, Object> params = new HashMap<String, Object>();
		String filtro = "";
		if (parametros.condicoes != null){
			for (CondicaoInfo condicao : parametros.condicoes) {
				if (condicao.propriedade ==  "nome" && condicao.tipoCondicao == CondicaoTipoEnum.Igual){
					// Adiciona o nome do atribulo da entidade e o valor da condição
					params.put("nome", condicao.valores[0]);
					filtro += "nome" + "==" + "'" +  condicao.valores[0] + "'" + " && ";
				}
			}
			
			if (filtro != "")
				filtro = filtro.substring(0, filtro.length() - 4);
		}		
		
		List<TelefoneInfo> resultado = DBLibHelper.consultar(TelefoneInfo.class, filtro);		
		return new ConsultarObjetoResponse<TelefoneInfo>(resultado);
	}

	@Override
	public ReceberObjetoResponse<TelefoneInfo> receberObjeto(
			ReceberObjetoRequest<TelefoneInfo> parametros) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public SalvarObjetoResponse<TelefoneInfo> salvarObjeto(
			SalvarObjetoRequest<TelefoneInfo> parametros) {
		SalvarObjetoResponse<TelefoneInfo> res = new SalvarObjetoResponse<TelefoneInfo>();
		res.setObjeto(DBLibHelper.salvar(parametros.getObjeto()));		
		return res;
	}

	@Override
	public RemoverObjetoResponse<TelefoneInfo> removerObjeto(
			RemoverObjetoRequest<TelefoneInfo> parametros) {
		
		// Remove 
		DBLibHelper.remover(TelefoneInfo.class, parametros.getKeyObjeto());
		// Retorna
		return new RemoverObjetoResponse<TelefoneInfo>();
	}

}
